Consulta de Guías Docentes



Academic Year/course: 2020/21

30212 - Concurrent and Distributed Systems Programming


Syllabus Information

Academic Year:
2020/21
Subject:
30212 - Concurrent and Distributed Systems Programming
Faculty / School:
110 - Escuela de Ingeniería y Arquitectura
326 - Escuela Universitaria Politécnica de Teruel
Degree:
439 - Bachelor's Degree in Informatics Engineering
443 - Bachelor's Degree in Informatics Engineering
ECTS:
6.0
Year:
2
Semester:
First semester
Subject Type:
Compulsory
Module:
---

1. General information

2. Learning goals

3. Assessment (1st and 2nd call)

4. Methodology, learning tasks, syllabus and resources

4.1. Methodological overview

The methodology followed in this course is oriented towards the achievement of the learning objectives. A wide range of teaching and learning tasks are implemented such as:

  • students must work on the subject since the beginning of the semester.
  • lectures for the presentation of the main concepts and methodologies for the development of concurrent and distributed systems. The teacher will make the lectures as interactive as possible so that students should also participate.
  • the use of the presented methodologies in practical problem sessions, where students should have a participative attitude.
  • the laboratory sessions, where students will learn the necessary technologies for the development of programming projects where different entities should have to cooperate. For that, the studied synchronization mechanisms should have to be used.
  • some teamwork programming projects, which should be conveniently designed, developed, documented and demonstrated.

4.2. Learning tasks

The course includes the following learning tasks:

  • about 60 hours of face-to-face activities, including lectures, problem sessions and laboratory sessions
  • about 30 hours of teamwork
  • about 55 hours of student individual work
  • about 5 hours for evaluation

4.3. Syllabus

The course will address the following topics:

  • Introduction to concurrency (4h approx.)

  • Modelling of concurrent systems (6h approx.)

  • The critical section problem (5h approx.)

  • Semaphores (8h approx.)

  • Monitors (6h approx.)

  • Introduction to distributed systems (3h approx.)

  • Coordination by means of tuple spaces (3h approx.)

  • Distributed algorithms (7h approx.)

  • Introduction to real-time systems (1.5h approx.)

  • Introduction to event-based systems (1.5h approx.)

The laboratory sessions will cover the following topics:

  • Threads and shared data (2h)

  • Solutions to the critical section problem: the Peterson algorithm (2h)

  • Synchronization by means of semaphores (2h)

  • Synchronization by means of monitors (2h)

  • Synchronization of distributed systems by means of sockets (2h)

  • Analysis of the teamwork project (2h)

4.4. Course planning and calendar

The concrete schedule of the proposed activities will be established according to the faculty organization.

 


Curso Académico: 2020/21

30212 - Programación de sistemas concurrentes y distribuidos


Información del Plan Docente

Año académico:
2020/21
Asignatura:
30212 - Programación de sistemas concurrentes y distribuidos
Centro académico:
110 - Escuela de Ingeniería y Arquitectura
326 - Escuela Universitaria Politécnica de Teruel
Titulación:
439 - Graduado en Ingeniería Informática
443 - Graduado en Ingeniería Informática
Créditos:
6.0
Curso:
2
Periodo de impartición:
Primer semestre
Clase de asignatura:
Obligatoria
Materia:
---

1. Información Básica

1.1. Objetivos de la asignatura

La asignatura y sus resultados previstos responden a los siguientes planteamientos y objetivos:

En esta asignatura el alumno aprenderá a enfrentarse al diseño de programas en los que un conjunto de procesos deben sincronizarse, ya sea mediante mecanismos de memoria compartida como a través de redes de comunicaciones, llegando a poder razonar sobre la corrección de la solución propuesta.

1.2. Contexto y sentido de la asignatura en la titulación

Esta asignatura, junto con las de programación del primer año y la asignatura de Teoría de la Computación son la plataforma sobre la que se va a asentar todo el desarrollo de las asignaturas posteriores que trabajen en el desarrollo de sistemas. Actualmente es difícil encontrar una aplicación “software” que no incluya características propias de sistemas concurrentes, distribuidos y de tiempo real.

1.3. Recomendaciones para cursar la asignatura

La asignatura es la continuación natural de las asignaturas de programación presentadas en el primer año de estudios, Programación I y Programación II. Es necesario que el alumno haya adquirido soltura en el desarrollo de programas secuenciales correctos. Es también recomendable que se encuentre cursando las asignaturas de Sistemas Operativos y Teoría de la Computación, ya que comparten algunos temas clave.

2. Competencias y resultados de aprendizaje

2.1. Competencias

Al superar la asignatura, el estudiante será más competente para...

Contribuye a que el estudiante adquiera las siguientes competencias generales comunes a la rama de informática:

  • Conocer y aplicar los procedimientos algorítmicos básicos de las tecnologías informáticas para diseñar soluciones a problemas, analizando la idoneidad y complejidad de los algoritmos propuestos.
  • Conocer y aplicar las características, funcionalidades y estructura de los Sistemas Distribuidos, las Redes de Computadores e Internet y diseñar e implementar aplicaciones basadas en ellas.
  • Conocer y aplicar los principios fundamentales y técnicas básicas de la programación paralela, concurrente, distribuida y de tiempo real.
  • Conocer y aplicar los principios, metodologías y ciclos de vida de la ingeniería de software. 

Adicionalmente, contribuye a adquirir las siguientes competencias generales/transversales:

  • Capacidad para resolver problemas y tomar decisiones con iniciativa, creatividad y razonamiento crítico.
  • Capacidad para usar las técnicas, habilidades y herramientas de la Ingeniería necesarias para la práctica de la misma.
  • Capacidad para aprender de forma continuada y desarrollar estrategias de aprendizaje autónomo.
  • Capacidad para aplicar las tecnologías de la información y las comunicaciones en la Ingeniería.

2.2. Resultados de aprendizaje

El estudiante, para superar esta asignatura, deberá demostrar los siguientes resultados...

El estudiante terminará con un conocimiento profundo de cuáles son las características específicas de los sistemas concurrentes y distribuidos.

Conocerá los problemas generados por el acceso concurrente a datos y recursos, así como las soluciones conceptuales y tecnológicas que se han dado a los mismos

Conocerá las características de los sistemas distribuidos, los retos que plantea y las soluciones que se han planteado para los mismos.

Tendrá nociones de qué son los sistemas tiempo real, y sistemas basados en eventos.

Conocerá herramientas para el diseño y programación de programas con características concurrentes y/o distribuidas.

2.3. Importancia de los resultados de aprendizaje

En la época en que nos encontramos, todo ingeniero informático debe ser capaz de diseñar sistemas concurrentes y distribuidos. Debe también entender cuáles son las características importantes a considerar en sistemas en que el tiempo real es un requisito. Una base sólida en estos aspectos es imprescindible para poder desenvolverse en el mundo profesional. 

3. Evaluación

3.1. Tipo de pruebas y su valor sobre la nota final y criterios de evaluación para cada prueba

El estudiante deberá demostrar que ha alcanzado los resultados de aprendizaje previstos mediante una prueba global de evaluación compuesta de tres partes:

En la Escuela de Ingeniería y Arquitectura de Zaragoza:

  • Prueba práctica de laboratorio (25%): El objetivo de esta prueba es evaluar los conocimientos y destrezas que han adquirido los alumnos en las prácticas de la asignatura.
  • Realización y defensa de un trabajo práctico en grupo (25%): Durante esta actividad se les planteará a los alumnos un proyecto de programación, relacionado con los contenidos de la asignatura, que deberán realizar en grupo. Cada grupo deberá comprender los requisitos del proyecto, evaluar posibles alternativas de solución y, finalmente, implementar la que considere más adecuada. El proyecto resultado de cada grupo deberá ser entregado y defendido por sus integrantes en las fechas establecidas por los profesores. Se valorará la corrección de la solución respecto a los requisitos iniciales y el grado de justificación de la solución alcanzada.
  • Prueba teórico-práctica (50%): En esta prueba se plantearán cuestiones y/o problemas relacionados con el programa impartido en la asignatura. En general, se valorará la calidad y claridad de las respuestas, así como las estrategias de solución planteadas por los alumnos.

La calificación final de la asignatura se obtendrá como la media ponderada de las tres partes, teniendo en cuenta que es necesario llegar a obtener, al menos, 5.0 puntos sobre 10.0 en cada una de partes.  En caso de no alcanzar ese mínimo en alguna de las partes, la calificación global de la asignatura será la mínima entre 4.0 y el resultado de ponderar con los porcentajes de cada parte.

La evaluación de la asignatura en la convocatoria de septiembre constará de dos pruebas:

  • Prueba escrita teórico-práctica (50%), de características similares a la de la primera convocatoria
  • Prueba práctica de laboratorio (50%), en la que se evaluarán los conocimientos y destrezas de naturaleza práctica en la implementación de sistemas concurrentes y distribuidos.

La calificación final de la asignatura en esta convocatoria se obtendrá como la media ponderada de las dos partes.


En la Escuela Universitaria Politécnica de Teruel:

La nota final de la asignatura en la convocatoria ordinaria se divide de la siguiente forma:

  • Trabajo en grupo. 20% de la nota final. Consistirá en proponer un problema de programación concurrente, resolverlo y exponerlo. En el examen final habrá una parte de recuperación de esta actividad.
  • Prácticas. 30% de la nota final. Habrá varias prácticas entregables a lo largo del curso, referidas a distintos temas del mismo. En el examen final habrá una parte de recuperación de esta actividad.
  • Teoría y ejercicios. 50% de la nota final. Evaluable en el examen final, que constará de cuestiones y/o problemas relacionados con el programa impartido en la asignatura.

La calificación final de la asignatura se obtendrá como la media ponderada de las tres partes, teniendo en cuenta que es necesario llegar a obtener, al menos, 4 puntos sobre 10 en las prácticas y 4 puntos sobre 10 en la prueba escrita. En caso de no alcanzar ese mínimo en alguna de esas partes, la calificación global de la asignatura será la mínima entre 4.0 y el resultado de ponderar con los porcentajes de cada parte.

En cuanto a la convocatoria de septiembre, la nota final será la nota del examen extraordinario, teniendo en cuenta que ese examen tendrá una parte de prácticas que valdrá el 20% de la nota total. Aquellos que hubieran aprobado la parte de prácticas en la convocatoria ordinaria mantendrán la nota y no tendrán que hacer dicha parte de prácticas en el examen extraordinario. En la convocatoria extraordinaria, la nota del trabajo no se mantiene.

4. Metodología, actividades de aprendizaje, programa y recursos

4.1. Presentación metodológica general

El proceso de aprendizaje que se ha diseñado para esta asignatura se basa en lo siguiente:

El aprendizaje se obtendrá a partir de tres entradas: la sesiones explicativas del profesorado, los trabajos desarrollados en las sesiones prácticas y el trabajo del alumno (individual o en grupo).

Para el desarrollo de los dos primeros tipos de actividades, el alumno deberá haber hecho un trabajo previo. En el primer caso,  el repaso y estudio de los contenidos planteados en sesiones anteriores. En el caso de las sesiones prácticas, el alumno deberá acudir con el enunciado del trabajo analizado y un primer diseño de la solución, así como la lista de dudas o aclaraciones que requieran la intervención del profesor. 

4.2. Actividades de aprendizaje

El programa que se ofrece al estudiante para ayudarle a lograr los resultados previstos comprende las siguientes actividades...:

Las actividades se organizarán en base a sesiones teórico-prácticas, resolución de problemas (con y sin tutela del profesor), prácticas de laboratorio, trabajo en equipo y actividades de evaluación.

Por tipos de actividad, la dedicación del alumno se organiza en torno a:

* 60 horas de actividades teórico-prácticas y de laboratorio
* 30 horas de trabajo en grupo
* 55 horas de trabajo y estudio individual efectivo (estudio de apuntes y textos, resolución de problemas, preparación de clases y prácticas, desarrollo de programas, etc.)
* 5 horas dedicadas a distintas pruebas de evaluación

4.3. Programa

El programa de la asignatura consta de los siguientes temas (entre paréntesis se especifica el número de horas de trabajo teórico-práctico y en la solución de problemas):

    Introducción a la programación concurrente (4h aprox.)
    Modelado y análisis de sistemas concurrentes (6h aprox.)
    El problema de la sección crítica (5h aprox.)
    Semáforos (8h aprox.)
    Monitores (6h aprox.)
    Introducción a la programación distribuida (3h aprox.)
    Coordinación basada en espacios de tuplas (3h aprox.)
    Algoritmos distribuidos (7h aprox.)
    Introducción a la programación dirigida por eventos y tiempo real (3h aprox.)

También se realizarán las siguientes prácticas:

    La programación concurrente. Threads y datos compartidos. Problemas generados por la compartición de datos y recursos (2h)
    Solución al problema de la sección crítica (2h)
    Programación con semáforos (2h)
    Programación con monitores (2h)
    Programación de sistemas distribuidos (4h)
    Análisis del proyecto en grupo (2h)

4.4. Planificación de las actividades de aprendizaje y calendario de fechas clave

El calendario de la asignatura estará definido por el centro en base al calendario académico del curso correspondiente.
El calendario de clases, prácticas y exámenes, así como las fechas de entrega de trabajos de evaluación, se anunciarán con suficiente antelación.

4.5. Bibliografía y recursos recomendados

Teruel:

http://psfunizar7.unizar.es/br13/egAsignaturas.php?codigo=30212&Identificador=12947

Zaragoza:

Se proporcionará a los alumnos conforme avance el curso.